import { createApp } from 'vue'
import { qiankunWindow, renderWithQiankun } from 'vite-plugin-qiankun/dist/helper'
import App from './App.vue'
import router from './router'
import pinia from './stores'
import Antd from 'ant-design-vue'
import 'ant-design-vue/dist/reset.css';
import * as Icons from '@ant-design/icons-vue'
import zhCN from 'ant-design-vue/es/locale/zh_CN'

let app = null

/**
 * 渲染函数
 * @param {Object} props qiankun传递的属性
 */
function render(props = {}) {
  const { container } = props
  
  // 创建Vue应用实例
  app = createApp(App)

  // 配置Ant Design Vue
  app.use(Antd, {
    locale: zhCN
  })

  // 配置路由
  app.use(router)

  // 配置Pinia状态管理
  app.use(pinia)

  // 全局注册Ant Design图标
  const icons = Icons
  for (const i in icons) {
    app.component(i, icons[i])
  }

  // 确定挂载节点
  const mountNode = container ? container.querySelector('#app') : '#app'
  
  // 挂载应用
  app.mount(mountNode)
  
  console.log('[tds-ec-web] render success')
  console.log('[tds-ec-web] 运行环境:', qiankunWindow.__POWERED_BY_QIANKUN__ ? 'qiankun微应用' : '独立应用')
  console.log('[tds-ec-web] 当前路径:', window.location.pathname)
}

/**
 * 独立运行时，直接挂载应用
 */
console.log(window.qiankunProps,'===================main-web-==================',qiankunWindow.qiankunProps)
if (!qiankunWindow.__POWERED_BY_QIANKUN__) {
  console.log('[tds-ec-web] 独立运行模式')
  render()
}

renderWithQiankun({
  /**
   * qiankun 生命周期钩子 - 应用挂载
   * @param {Object} props qiankun传递的属性
   */
  mount(props) {
    console.log('[tds-ec-web] mount', props)
    console.log('[tds-ec-web] 主应用传递的props:', props)
    try {
      render(props)
      
      // 如果主应用传递了全局状态，可以在这里处理
      if (props.getGlobalState) {
        const globalState = props.getGlobalState()
        console.log('[tds-ec-web] 获取到主应用全局状态:', globalState)
      }
      
      // 如果主应用传递了方法，可以在这里调用
      if (props.mainAppMethods) {
        console.log('[tds-ec-web] 主应用提供的方法:', props.mainAppMethods)
      }
      
    } catch (error) {
      console.error('[tds-ec-web] mount error:', error)
    }
  },
  /**
 * qiankun 生命周期钩子 - 应用初始化
 */
  bootstrap() {
    console.log('[tds-ec-web] bootstrap')
  },
  /**
   * qiankun 生命周期钩子 - 应用挂载
   * @param {Object} props qiankun传递的属性
   */
  unmount() {

    console.log('[tds-ec-web] unmount')
    try {
      if (app) {
        app.unmount()
        app = null
      }
    } catch (error) {
      console.error('[tds-ec-web] unmount error:', error)
    }
  },
  /**
   * qiankun 生命周期钩子 - 应用更新
   * @param {Object} props qiankun传递的属性
   */
  update() {
    console.log('[tds-ec-web] update', props)
  }
});